「新刊が出たぞ」
「何を書いた本?」
「コンピュータが動く仕組み」
「誰に向けた本?」
「一般向け。特別な予備知識は要求していない。まあJavaScriptが読めると良いのだが」
「他には?」
「少し歯ごたえがある。予備知識は要求しないが、意欲は必要」
「なぜそうなるの?」
「ハードルが少し高いので、どうしても駆け足になるから」
「なぜ駆け足なの?」
「一冊の本でビットから始めて論理演算を説明して、CPUの仕組みから高級言語の実装まで話をしたら、どうしても駆け足になってしまう」
「でも、駆け足でもビットから高級言語まで話が進むのだね?」
「そう。8080のエミュレータ上でCP/Mが動いてBrainf*ckのサブセットを実装してHello Worldまで行く」
「それは意欲的だ」
「一応説明することを減らすためにCPUは古い8080を題材にしているし、高級言語も言語仕様が小さいBrainf*ckを扱っているがね。でも全部実際に動く本物だ」
「実際に動くって、8080のマシンは滅多に見ないぞ」
「だからWebブラウザで動く8080エミュレータを作った」
「これでCP/Mがすぐ動くよ」
「8080なくてもいいの?」
「JavaScriptで動く8080エミュレーションが動いているから要らないよ」
「CP/Mの互換度は?」
「当時のCP/M 2.2のバイナリーが無修正で動いているから互換度は100%」
「8080エミュレーションの互換度は?」
「8080 instruction exerciserが全テストパスするレベルで互換。ドキュメント化されていないフラグの動作まで全部合わせてある」
「スマホでも動くの?」
「動くよ」
オマケ §
「でも、なぜ8080?」
「MOVとか、最新のインテルのCPUでも使ってるニモニックだからね。継承された要素も多いので」
「今のマシンの理解に役立つって事だね」